package org.dtrd.common.util;

import java.util.Optional;
import java.util.function.Function;

/**
 * 对象包装
 *
 * @author xiao
 * @date 2022/8/12 6:40 PM
 */
public class ObjectWrapperUtil {

    /**
     * 对象包装转换
     *
     * @param value        原始数据
     * @param defaultValue 默认值
     * @param mapper       转换器
     * @param <R>
     * @param <D>
     * @return
     */
    public static <R, D> D wrapper(R value, D defaultValue, Function<R, D> mapper) {
        return Optional.ofNullable(value).map(mapper).orElse(defaultValue);
    }

    /**
     * 对象包装
     *
     * @param value        原始数据
     * @param defaultValue 默认值
     * @param <T>
     * @return
     */
    public static <T> T wrapper(T value, T defaultValue) {
        return Optional.ofNullable(value).orElse(defaultValue);
    }

}
